<?php

namespace app\admin\behavior;

use app\common\model\rate\Admin;
use app\common\model\rate\AdminRateArea;
use app\common\model\rate\AuthGroupAccess;
use fast\Pinyin;
use fast\Random;
use think\Db;


/**
 * 生成管理员账号，并把账号加入对应权限组
 * 企业账号权限组：3，经销商权限组为4 ，平台管理员组为2，超级管理员组为1
 */
class AdminAuth
{
    /**
     * 加入权限组
     * type为账号类别
     * id为账号id
     */
    public function run(&$data) {

        //生成管理员账号
        $admin = self::createAdmin($data);
        $auth_group_access = new AuthGroupAccess();
        //把用户加入权限组
        $auth_group_access->insert([
            'uid' => $admin['id'],
            'group_id' => config('site.rate_top_group') //定死的
        ]);

        $rate_area = new AdminRateArea();
        //加入税源地和管理员对应关系
        $rate_area->insert([
            'rate_area_id' => $data['id'],
            'admin_id' => $admin['id']
        ]);
        return true;
    }

    /**
     * 生成管理员账号
     * @param Object $company
     * name:企业名称
     * id: 企业id
     * type: 账号类型
     */
    private static function createAdmin($data) {
        $pinyin = Pinyin::get($data['name']);
        $admin['username'] = substr($pinyin, 0, 6).''.$data['id'];
        $admin['nickname'] = $data['name'];
        $admin['email'] = isset($data['email'])? $data['email'] : '';
        $admin['salt'] = Random::alnum();
        $admin['password'] = md5(md5(123456) . $admin['salt']);
        $admin['type'] = 1; //税源地角色。
        $admin['who'] = 0; //平台管理员创建
        $adminModel = new Admin();
        $res = $adminModel->validate('Admin.add')->data($admin)->isUpdate(false)->save();

        return $adminModel->toArray();
    }
}
